Skip to main content

Operation Register

Sa se implementeze un registru multifunctional.

Intrarile registrului sunt:

  • i_w_clk - ceas
  • i_w_reset - reset (activ pe 0)
  • i_w_data - date de intrare (4 biți)
  • i_w_we - daca se scrie in registru
  • i_w_oe - daca se afiseaza in registru
  • i_w_opsel - selectie asupra unui operatii pe registru (2 biți)

Iesirea registrului este:

  • o_w_out este activa doar cand i_w_oe este activ (1), altfel o_w_out va avea valoarea 4'b0000. (4 biți)

Prioritatea funcțiilor registrului sunt: i_w_we, i_w_oe, i_w_opsel. (daca i_w_we si i_w_oe sunt active in acelasi timp se va face doar scrierea in registru a valorii i_w_data)

Operatiile pe care va trebui sa le implementati in functie de valoarea i_w_opsel le veti afla doar dupa apasarea butonului "evaluate" din VPL.

Operatiile posibile sunt:

  • SHR1 - Shift right by one
  • SHL1 - Shift left by one
  • SAR1 - Shift right arithmetic by one
  • ROTR1 - Rotate right by one
  • ROTL1 - Rotate left by one
  • REDUCE_BITWISE_OR - OR all bits
  • REDUCE_BITWISE_XOR - XOR all bits
  • REDUCE_BITWISE_AND - AND all bits
  • NEG - Two's complement
  • NOT - One's Complement
  • INC - Increment by one
  • DEC - Decrement by one